package 力扣.数组;

public class 反转字符串中的单词557 {
    public static void main(String[] args) {
        String s = "Let's take LeetCode contest";
//        String s = "";
        String re = reverseWords(s);
        System.out.println(re);
    }

    /**
     * 思路：遍历数组知道找到有空格的字符，然后颠倒位置
     * 开辟一个新的字符数组保存反转后的字符
     * @param s
     * @return
     */
    public static String reverseWords(String s) {
        int length = s.length();
        char[] chars = new char[length];
        int a = 0;
        for (int i = 0; i < length; i++) {
                while (i < length && s.charAt(i)!= ' '){//找出那个空格
                    i++;
                }
                for (int j = a; j < i; j++) {//交换（利用新的空间——数组）
                    chars[j] = s.charAt( a + (i-1-j));//利用（相对位置+动态差值）（弄清首尾）
                }
                if (i<length-1){//若不是最后一个 则添加空格
                    chars[i] = ' ';
                    a=i+1;
                }
        }
        String re = new String(chars);//字符数组转为字符串 String.ValueOf也可以
        return re;
    }
}
